diff --git a/django/db/models/query_utils.py b/django/db/models/query_utils.py
index c957ffa564..53d9988162 100644
--- a/django/db/models/query_utils.py
+++ b/django/db/models/query_utils.py
@@ -64,6 +64,15 @@ class Q(tree.Node):
     def __and__(self, other):
         return self._combine(other, self.AND)
 
+    def __rand__(self, other):
+        if not isinstance(other, Q):
+            # Attempt to convert `other` to a Q object if possible
+            if hasattr(other, 'resolve_expression'):
+                other = Q(other.resolve_expression())
+            else:
+                raise TypeError('Cannot combine Q with non-Q instance, or instance without resolve_expression method.')
+        return self._combine(other, self.AND)
+
     def __invert__(self):
         obj = type(self)()
         obj.add(self, self.AND)
